@风铃
2年前 提问
1个回答

数字签名的工作原理是什么

帅末
2年前

数字签名的工作原理:发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。

数字签名实现的具体原理:

图片

上述图示便描述了数字签名验证的完整过程:

发送方A将消息用Hash算法产生一个消息摘要,这个消息摘要有两个重要特性:抗碰撞性(指找到散列值相同的两条不同的消息是非常困难的)和摘要长度固定(MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节),使得任何消息产生的签名值长度是一样的。

发送方A产生消息摘要后,用自己的私钥对摘要进行加密,这个加密后的消息摘要就是数字签名,随后发送方A将消息与签名发给接受方B。在这里有人会疑问,为什么对是对消息摘要进行加密签名?对于较大文件而言,消息摘要即可将消息转换成简短的信息摘要,用以验证信息的完整性,还可压缩信息长度提高签名效率。

B接受到消息及其签名后,用发送方A的公钥解密这个签名,获得由发送A生成的消息摘要,接着用发送A所用的Hash算法重新生成所获得的消息的摘要,并对比这两个摘要。如果相同,说明这个签名是发送A针对这个消息的有效签名;如果不相同,则签名无效。